package buffbuildergui;

import java.util.ArrayList;

public class OverTimeAction extends Entity {
    @SuppressWarnings("oracle.jdeveloper.java.nested-assignment")
    public OverTimeAction() {
        super();
        ArrayList<String> temp = new ArrayList<>();
        Property p = null;
        Property q = null;
        ArrayList<Property> al = null,al0=null;
        temp = new ArrayList<>();
        temp.add("\"DoDamage\"");
        temp.add("\"DoDamageToPlanet\"");
        temp.add("\"DoDamageToTarget\"");
        temp.add("\"DoModuleConstruction\"");
        temp.add("\"DoPercOfMaxDamageToPlanet\"");
        temp.add("\"DrainAntiMatterAndDoDamage\"");
        temp.add("\"DrainAntiMatter\"");
        temp.add("\"EarnResources\"");
        temp.add("\"Magnetize\"");
        temp.add("\"RestoreAntiMatter\"");
        temp.add("\"RestoreHull\"");
        temp.add("\"RestoreShields\"");
        temp.add("\"StealPlanetProduction\"");
        props.add(p=new Property("buffOverTimeActionType",Property.FINITE,temp,this));
            al = new ArrayList<Property>();
            p.plugs.add(al = new ArrayList<Property>());
                al.add(q=new Property("damageRate",Property.VOID,this));
                doubleLevels(al);
                damageAffectType(al);
                al.add(q=new Property("isDamageShared",Property.BOOLEAN,this));
            al = new ArrayList<Property>();
            p.plugs.add(al = new ArrayList<Property>());
                al.add(q=new Property("damageRate",Property.VOID,this));
                doubleLevels(al);
                al.add(q=new Property("populationKillRate",Property.VOID,this));
                doubleLevels(al);
            al = new ArrayList<Property>();
            p.plugs.add(al = new ArrayList<Property>());
                al.add(q=new Property("damageRate",Property.VOID,this));
                doubleLevels(al);
                damageAffectType(al);
                al.add(q=new Property("isDamageShared",Property.BOOLEAN,this));
            al = new ArrayList<Property>();
            p.plugs.add(al = new ArrayList<Property>());
                al.add(q=new Property("buildRate",Property.VOID,this));
                doubleLevels(al);
                al.add(q=new Property("moduleCostFraction",Property.VOID,this));
                doubleLevels(al);
            al = new ArrayList<Property>();
            p.plugs.add(al = new ArrayList<Property>());
                al.add(q=new Property("damageRate",Property.VOID,this));
                doubleLevels(al);
                al.add(q=new Property("populationKillRate",Property.VOID,this));
                doubleLevels(al);
            al = new ArrayList<Property>();
            p.plugs.add(al = new ArrayList<Property>());
                al.add(q=new Property("drainAntiMatterRate",Property.VOID,this));
                doubleLevels(al);
                al.add(q=new Property("damageRate",Property.VOID,this));
                doubleLevels(al);
                al.add(q=new Property("isDamageShared",Property.BOOLEAN,this));
            al = new ArrayList<Property>();
            p.plugs.add(al = new ArrayList<Property>());
                al.add(q=new Property("drainAntiMatterRate",Property.VOID,this));
                doubleLevels(al);
            al = new ArrayList<Property>();
            p.plugs.add(al = new ArrayList<Property>());
                al.add(q=new Property("earnRate",Property.VOID,this));
                doubleLevels(al);
            al = new ArrayList<Property>();
            p.plugs.add(al = new ArrayList<Property>());
                targetFilter(al);
                range(al);
                maxNumTargets(al);
                al.add(q=new Property("damagePerImpact",Property.VOID,this));
                doubleLevels(al);
                al.add(q=new Property("pullForceMagnitude",Property.DOUBLE,this));
            al = new ArrayList<Property>();
            p.plugs.add(al = new ArrayList<Property>());
                al.add(q=new Property("antiMatterRestoreRate",Property.VOID,this));
                doubleLevels(al);
            al = new ArrayList<Property>();
            p.plugs.add(al = new ArrayList<Property>());
                al.add(q=new Property("hullRestoreRate",Property.VOID,this));
                doubleLevels(al);
            al = new ArrayList<Property>();
            p.plugs.add(al = new ArrayList<Property>());
                al.add(q=new Property("shieldRestoreRate",Property.VOID,this));
                doubleLevels(al);
            al = new ArrayList<Property>();
            p.plugs.add(al = new ArrayList<Property>());
                al.add(q=new Property("stolenPlanetProductionPerc",Property.VOID,this));
                doubleLevels(al);
    }
    
    void damageAffectType(ArrayList<Property> al) {
        ArrayList<String> temp = new ArrayList<String>();
        ArrayList<String> temp0 = new ArrayList<String>();
        ArrayList<Property> al0 = new ArrayList<Property>();
        temp.add("AFFECTS_SHIELDS_AND_HULL");
        temp.add("AFFECTS_ONLY_HULL");
        temp.add("AFFECTS_ONLY_SHIELDS");
        al.add(new Property("damageAffectType",Property.FINITE,temp,this));
    }
    
    void damageType(ArrayList<Property> al) {
        ArrayList<String> temp = new ArrayList<String>();
        ArrayList<String> temp0 = new ArrayList<String>();
        ArrayList<Property> al0 = new ArrayList<Property>();
        temp.add("ENERGY");
        temp.add("PHYSICAL");
        al.add(new Property("damageAffectType",Property.FINITE,temp,this));
    }
}
